package cn.itsource.pethome_0310.org.controller;


import cn.itsource.pethome_0310.basic.domain.BaseQuery;
import cn.itsource.pethome_0310.basic.domain.JSONResult;
import cn.itsource.pethome_0310.org.domain.Department;
import cn.itsource.pethome_0310.org.service.DeptService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpRequest;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.support.HttpRequestHandlerServlet;

import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.List;

@RequestMapping("/dept")
@RestController
@Api(value = "部门管理接口文档",description = "部门接口文档")
public class DeptController {
    @Autowired
    private DeptService deptService;

    /**
     * 三种接受请求的方式
     * 1.rest风格  前端:所以参数拼接到路径url上 localhost/findAll/1
     *            后端:1可以用任何XXXMapping注解打到方法上做映射 参数需要打{}
     *                  2.需要在参数上加上注解@PathVariable
     * 2.get\请求: 前端:传参方式通过?拼接localhost/findAll?id=1
     *             后端:1.必须要用 @GetMapping 或者使用万能接收@RequestMapping
     *                  2.参数上不需要打任何注解,直接就可以获取参数 其实默认会有一个注解  @RequestParam
     *
     * 3.post请求: 前端:参数需要通过json封装,放入请求体中
     *             后端:  1.必须打上PostMapping映射路径 或者使用万能接收@RequestMapping
     *                      2.参数上一定要打上@RequestBody 才能接收 将json格式转换成java\对象
     *
     */
    //alt+← 回到上一步
    @GetMapping("/findAll")
    @ApiOperation(value="查询所有用户", notes="查询所有用户")
    public List<Department> findAll(){

        return deptService.findAll();
    }
    /**
    *1.请求方式: post
    *2.url: dept/batchDelete
    *3.请求参数: List<Long> </>
    *4.响应参数: JSONResult
    **/
    @PostMapping("/batchDelete")
    @ApiOperation(value="批量删除", notes="批量删除")
    public JSONResult batchDelete(@RequestBody List<Long> ids){
        System.out.println(ids);
        return deptService.batchDelete(ids);
    }

    @GetMapping("/delete/{id}")
    @ApiOperation(value="删除用户", notes="删除用户")
    public JSONResult delete(@PathVariable Long id){

        return deptService.delete(id);
    }
    /**
    *1.请求方式: post
    *2.url:dept/add
    *3.请求参数:Dept对象
    *4.响应参数:JSONResult
    **/
    @PostMapping("/add")
    @ApiOperation(value="查询所有用户", notes="查询所有用户")
    public JSONResult add(@RequestBody @Valid Department department){

        return deptService.add(department);
    }
    /**
    *1.请求方式: get
    *2.url:dept/findTree
    *3.请求参数:null
    *4.响应参数: JSONResult
    **/
    @GetMapping("/findTree")
    @ApiOperation(value="查询级联树形结构", notes="查询级联树形结构")
    public JSONResult findTree(){

        return deptService.findTree();
    }
    /**
    *1.请求方式: post
    *2.url:/dept/findPage
    *3.请求参数: {page:1,keyword:""}
    *4.响应参数:  JsonResult
    **/
    @PostMapping("/findPage")
    @ApiOperation(value="查询所有用户", notes="查询所有用户")
    public JSONResult findPage(@RequestBody BaseQuery baseQuery){

        return deptService.findPage(baseQuery);
    }

}
